/*
 * InscreveListaAction.java
 *
 * Created on July 31, 2007, 9:24 AM
 */

package br.usp.poli.mfc.struts.action;

import br.usp.poli.mfc.struts.DAO.DAOFactory;
import br.usp.poli.mfc.struts.DAO.ListaDAO;
import br.usp.poli.mfc.struts.DAO.RevistaDAO;
import br.usp.poli.mfc.struts.bean.Lista;
import br.usp.poli.mfc.struts.bean.Revista;
import br.usp.poli.mfc.struts.bean.Usuario;
import java.util.ArrayList;
import java.util.HashMap;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForward;
/**
 *
 * @author William T.
 * @version
 */

public class InscreveListaAction extends Action {
    
    private final static String SUCCESS = "success";
    private final static String ERROR = "error";
    
    public ActionForward execute(ActionMapping mapping, ActionForm  form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
        HttpSession session = request.getSession();
        Usuario user = (Usuario)session.getAttribute("usuario");
        ArrayList<Revista> revistas = null;
        ArrayList<Lista> inscritas = null;
        RevistaDAO revistaDAO = DAOFactory.getRevistaDAO();
        revistas = revistaDAO.getNomeRevista(null); //TODO: tem que retornar um metodo soh com as revistas q ainda nao esta inscrito...
        ListaDAO listaDAO = DAOFactory.getListaDAO();
        inscritas = listaDAO.getListaByUsuario(user.getId_usuario());
        HashMap inscritasmap = new HashMap();
        if(inscritas != null) {
            for (int i = 0; i < inscritas.size(); i++) { // transforma pra hashmap com key = idrevista pra ajudar no search depois...
                inscritasmap.put(inscritas.get(i).getIDRevista(),inscritas.get(i));
            }
        }
        if(revistas != null) {
            if(inscritas != null) { // rmeove da lista de inscricoes as que ele jah tiver inscrito
                for (int i = 0; i < revistas.size(); i++) {
                    if(inscritasmap.containsKey(revistas.get(i).getIDRevista())) {
                        revistas.remove(i); // remove
                        i--;
                    }
                }
            }
            session.setAttribute("revistas",revistas);
            return mapping.findForward(SUCCESS);
        } else {
            return mapping.findForward(ERROR);
        }
        
    }
}
